home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / PublicDomain / Anwendungen / ASCII-Clip / ASCII-Clip.asc < prev    next >
Text File  |  1999-04-05  |  7KB  |  315 lines

  1.  
  2. WBStartup
  3. ;---------------------This Code requires the AmigaLibsII.res ------------------
  4.  
  5.  
  6. Let version$="$VER: ASCII-Clip v1.03 ? 5.April 1999 by FreeJack [FreeJack@FreeJack.de] (05.04.99)"
  7. Let Boot$=ProgDir$
  8.  
  9. Let lf.s=Chr$(10)
  10. Let lfn.s=Chr$(10)+Chr$(0)
  11.  
  12.  
  13. ;------------------------------- Catalog Part Start -----------------------------
  14.  
  15.  
  16. Dim Daten$(4), Cat$(65535)
  17.  
  18. Let *Cat=OpenCatalogA_(0,"ASCII-Clip.catalog",0)
  19. If *Cat
  20.    For i=1 To 4
  21.    Let Daten$(i)=PeekTo$(GetCatalogStr_(*Cat,i,0),0)
  22.    Next i
  23.    CloseCatalog_(*Cat)
  24. Else
  25.    Restore Datas
  26.    For i=1 To 4
  27.       Read Daten$(i)
  28.    Next i
  29. EndIf
  30.  
  31.  
  32. .Datas
  33. Data.s "made by FreeJack [FreeJack@FreeJack.de]"
  34. Data.s "Copies a single ASCII Code To Clipboard"
  35. Data.s "Then you can paste the ASCII-Code in any Program"
  36. Data.s "copied ..."
  37.  
  38. ;------------------------------- Catalog Part End ------------------------------
  39.  
  40.  
  41. ;------------------------------ Function Part Start ----------------------------
  42.  
  43. .Echo
  44. Statement Echo{Text$}
  45.    Let NText$=Text$+Chr$(10)+Chr$(0)
  46.    Let void=PutStr_(&NText$)
  47. End Statement
  48.  
  49. .MakeVers
  50. Function.s MakeVers{a$}
  51.    b$=UnRight$(a$,6)
  52.    Function Return b$
  53. End Function
  54.  
  55. vers$=MakeVers{version$}
  56. Echo{vers$}
  57.  
  58. ;------------------------------- Function Part End -----------------------------
  59.  
  60.  
  61. If NumPars=0
  62.       ;Echo {vers$}
  63. Else
  64.    Echo {Daten$(1)}
  65.    Echo {Daten$(2)}
  66.    Echo {Daten$(3)}
  67.    End
  68. EndIf
  69.  
  70.  
  71. ;-------------------------------- CLI Parsing End ------------------------------
  72. ;----------------------------- Clipboard Init Start ----------------------------
  73.  
  74.  
  75.  
  76. NEWTYPE.OwnIOStdReq
  77.   io_Message.Message
  78.   *io_Device.b           ;Device
  79. ;  *io_Unit.ClipboardUnitPartial
  80.   *io_Unit.b
  81.   io_Command.w
  82.   io_Flags.b
  83.   io_Error.b
  84.   io_Actual.l
  85.   io_Length.l
  86.   *io_Data.b
  87.   io_Offset.l
  88. ;add particulars to device here
  89.   io_ClipID.l
  90. End NEWTYPE
  91.  
  92.  
  93.  
  94.   #_INVALID=0:#_RESET=1:#_READ=2:#_WRITE=3:#_UPDATE=4
  95.   #_CLEAR=5:#_STOP=6:#_START=7:#_FLUSH=8:#_NONSTD= 9
  96.  
  97.  
  98.  
  99. DEFTYPE .OwnIOStdReq clipio
  100. DEFTYPE .MsgPort clipport
  101. clipsig.l=0
  102.  
  103. .ClipOpen
  104. Statement ClipOpen{}
  105.   SHARED clipio,clipport,clipsig
  106.  
  107.   clipport\mp_Node\ln_Type=4
  108.   clipport\mp_MsgList\lh_Head=&clipport\mp_MsgList\lh_Tail
  109.   clipport\mp_MsgList\lh_TailPred=&clipport\mp_MsgList\lh_Head
  110.  
  111.   clipio\io_Message\mn_Node\ln_Type=5
  112.   clipio\io_Message\mn_ReplyPort=&clipport
  113.   clipio\io_Message\mn_Length=SizeOf.IOStdReq
  114.  
  115.   d.s="clipboard.device"
  116.  
  117.   If OpenDevice_(d,0,clipio,0)<>0 Then End
  118.  
  119.   clipsig.l=AllocSignal_(-1):If clipsig<0 Then End
  120.   clipport\mp_SigBit=clipsig
  121.   clipport\mp_SigTask=FindTask_(0)
  122. End Statement
  123.  
  124. .ClipClose
  125. Statement ClipClose{}
  126.   SHARED clipio,clipsig
  127.  
  128.   CloseDevice_ clipio
  129.   FreeSignal_ clipsig
  130. End Statement
  131.  
  132. .ClipWrite
  133. Statement ClipWrite{s.s}
  134.   SHARED clipio
  135.  
  136.   ClipOpen{}
  137.   sodd.s=s
  138.   If Len(s) MOD 2 Then sodd+Chr$(0)
  139.   a.s="FORM"+Mkl$(12+Len(sodd))+"FTXTCHRS"+Mkl$(Len(s))+sodd
  140.   USEPATH clipio
  141.   \io_Command=#_WRITE
  142.   \io_Data=&a
  143.   \io_Length=Len(a)
  144.   \io_ClipID=0
  145.   \io_Offset=0
  146.   \io_Error=0
  147.   SendIO_ clipio
  148.  
  149.   \io_Command=#_UPDATE
  150.   SendIO_ clipio
  151.   ClipClose{}
  152. End Statement
  153.  
  154.  
  155.  
  156. ;------------------------------ Clipboard Init End ------------------------------
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163. font.l=AllocMem(200,$10002)
  164. Poke.w font+4,8
  165. Poke.l font  ,font+10
  166. fontn$="topaz.font"
  167. Poke$ font+10,fontn$
  168.  
  169.  
  170. ; Set up required IDCMP flags to respond to
  171. #IDCMP = #IDCMP_NEWSIZE | #IDCMP_RAWKEY | #IDCMP_MOUSEBUTTONS | #IDCMP_MOUSEMOVE
  172. #IDCMP =#IDCMP| #IDCMP_CLOSEWINDOW | #IDCMP_VANILLAKEY
  173.  
  174. WbToScreen 0
  175. WBenchToFront_
  176. *_screen._Screen = Peek.l(Addr Screen(0))
  177. DEFTYPE._Window *win
  178. DEFTYPE.l windowsig, signal
  179. DEFTYPE.IntuiMessage *msg
  180. DEFTYPE.IntuiText it
  181. quit.w = 0
  182. leer$  = "Clip me"
  183. TLeft.l=*_screen\Width-140
  184.  
  185.  
  186. ;--------- Define tags for Window
  187. Dim wtags.TagItem(15)
  188. Dim ztags.w(5)
  189.  
  190. ztags(0)=0
  191. ztags(1)=11
  192. ztags(2)=200
  193. ztags(3)=11
  194. ztags(4)=0
  195.  
  196. wtags(0)\ti_Tag=#WA_PubScreen,*_screen
  197. wtags(1)\ti_Tag=#WA_IDCMP,#IDCMP
  198. wtags(2)\ti_Tag=#WA_Flags,$1160e
  199. wtags(3)\ti_Tag=#WA_ScreenTitle,&vers$
  200. wtags(4)\ti_Tag=#WA_MinWidth,100
  201. wtags(5)\ti_Tag=#WA_MinHeight,11
  202. wtags(6)\ti_Tag=#WA_MaxWidth,*_screen\Width
  203. wtags(7)\ti_Tag=#WA_MaxHeight,*_screen\Height
  204. wtags(8)\ti_Tag=#WA_Left,TLeft
  205. wtags(9)\ti_Tag=#WA_Top,11
  206. wtags(10)\ti_Tag=#WA_Width,140
  207. wtags(11)\ti_Tag=#WA_Height,150
  208. wtags(12)\ti_Tag=#WA_Zoom,&ztags(0)
  209. wtags(13)\ti_Tag=#WA_Title,&leer$
  210. wtags(14)\ti_Tag=#TAG_END,#TAG_DONE
  211.  
  212. ; Try to open window
  213. *win = OpenWindowTagList_(0, &wtags(0))
  214. If *win
  215.    windowsig.l = 1 LSL *win\UserPort\mp_SigBit
  216.    d.l = windowsig|#SIGBREAKF_CTRL_C
  217.    rp.l=*win\RPort
  218.  
  219.    Gosub DrawData
  220.  
  221.    While quit = 0
  222.       signal.l = Wait_(d)
  223.       If (signal & windowsig)
  224.          *msg = GT_GetIMsg_(*win\UserPort)
  225.          While (*msg)
  226.             ev.l = *msg\Class
  227. ;            Echo{"Class: "+Hex$(ev)}
  228.             Select ev
  229.                Case #IDCMP_CLOSEWINDOW
  230.                   quit = 1
  231.                Case 2
  232.                   Gosub DrawData
  233.                Case $8
  234.                   Code.l = *msg\Code
  235.                   If Code=104 Then Gosub Clip
  236.  
  237.                Case $10
  238.                   Code.l = *msg\Code
  239.                   Gosub Emit
  240.                Case $200000
  241.                   Code.l = *msg\Code
  242.              ;     Echo{"Code : "+Str$(Code)}
  243.                   Select Code
  244.                      Case 27
  245.                         quit = 1
  246.                   End Select
  247.             End Select
  248.          GT_ReplyIMsg_(*msg)
  249.          *msg = GT_GetIMsg_(*win\UserPort)
  250.          Wend
  251.       End If
  252.       If (signal & #SIGBREAKF_CTRL_C)
  253.          ;---------- Ctrl-C needs to be pressed in CLI window !!!!!! -----------
  254.          quit = 1
  255.       End If
  256.    Wend
  257.    CloseWindow_(*win)
  258. End If
  259.  
  260. End
  261.  
  262.  
  263.  
  264. .DrawData
  265.    offset.b=6
  266.    ofont.l=OpenFont_(font)
  267.    SetFont_ rp,ofont
  268.    SetAPen_ rp,1
  269.    SetBPen_ rp,0
  270.    For i=0 To 15
  271.       For j=0 To 15
  272.          Move_    rp,j*8,i*8+offset
  273.          k=i*16+j
  274.          Text$=Chr$(k)
  275.          Text_    rp,&Text$,1
  276.       Next j
  277.    Next i
  278.    CloseFont_ ofont
  279. Return
  280.  
  281.  
  282. .Emit
  283.    ofont.l=OpenFont_(font)
  284.    SetFont_ rp,ofont
  285.    SetAPen_ rp,1
  286.    SetBPen_ rp,2
  287.    Mx.l=*win\GZZMouseX/8
  288.       If Mx> 15 Then Mx=15
  289.       If Mx<  0 Then Mx= 0
  290.    My.l=*win\GZZMouseY/8
  291.       If My> 15 Then My=15
  292.       If My<  0 Then My= 0
  293.    Zahl.l=My*16+Mx
  294.    Wert$=Left$(Str$(Zahl)+")  ",4)
  295.    Let Text$=Chr$(Zahl)+"= ASCII ("+Wert$
  296.    Move_    rp,8,135
  297.    Text_    rp,&Text$,14
  298.    CloseFont_ ofont
  299. Return
  300.  
  301. .Clip
  302.    ClipWrite {Chr$(Zahl)}
  303.    ofont.l=OpenFont_(font)
  304.    SetFont_ rp,ofont
  305.    SetAPen_ rp,1
  306.    SetBPen_ rp,2
  307.    Let Text$=Chr$(Zahl)+" = "+Daten$(4)
  308.    Move_    rp,8,135
  309.    Text_    rp,&Text$,14
  310.    CloseFont_ ofont
  311.  
  312. Return
  313.  
  314.  
  315.